package com.example.temp;

class Singletontest {
    /**
     * 二维数组查找： 使用while循环 从右上角开始遍历（也可以从其他三个角）判断a[行][列]
     * 是否等于target值 是直接返回，否判断是否大于target 如果大于列--如果小于行++
     *
     *
     * 输入二叉树前序和中序遍历的结果 重建二叉树（二叉树递归）：找到根节点root = pre[0]在中序数组的位置
     * 然后分别 rot.left 和root.right = 这个方法 (进行递归)  注意递归参数  两个数组的边界和长度的判断
     *
     * 旋转数组的最小值：(可以直接全部遍历球最小值  但这肯定不是我们想要的答案 因为浪费了一个条件)
     * 旋转数组旋转之前是非递减的  这里类似 二分查找  left=0 right = length-1   判断a[l+r/2]  如果大于
     * a[l] 说明没有发生转折 我们要找的最小数也就是转折点 说明最小数（转折点）在右边 让l= l+r/2  继续循环
     * 如果mid小于a[r] 说明转折点在前边 即左边数组  让r = mid 继续循环  while循环的条件是 l < r-1
     *
     *
     * 一只青蛙一次可以跳上1级台阶，也可以跳上2级。也可以跳上5级(递归  或者数学归纳法找规律)
     *
     *n=n&(n-1)统计二进制中1的个数 （最低位1会变成0  count++）
     * n=n&(n+1)统计二进制中0的个数
     *
     *求base的exponent次方  当底数为0  因为0不能作分母指数必须大于0  所以当base==0&&exponent<=0 是抛出异常
     *然后判断  循环exponet次 ans = ans*base  exponet>=0  输出ans  exponet<0 输出1/ans
     *
     *
     *奇数位于偶数之前： (2,1 就要交换) 类似m冒泡排序    内循环 从后往前 如果a[j]%2=1且a[j-1]%2=0  就交换   j--  这样内循环一轮
     * 下来  第一个数肯定是奇数  这时候 外循环i+1  继续重复  就可以了
     *
     * 倒数第K个节点  用一个  pre 和一个behind节点 ， 定义一个i  用于记录 节点移动位置  。 pre先跑 即 pre = pre.next; i++;
     * 当i>=k 时  behind开始跑  当pre.next =null 时 停止，因为pre和behind相隔K个节点 所以 behind就是所求值。但是 有一种特殊情况
     * 即 k>i  说明链表比较短  返回null即可
     *
     * 反转链表  迭代：
     *
     *
     */

}
